#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <assert.h>
#include <ctype.h>	

//void find_single_num(int* arr, int z, int* p1, int* p2)
//{
//	int i = 0;
//	int ret = 0;
//	for (i = 0; i < z; i++)
//	{
//		ret ^= arr[i];
//	}
//	int pos = 1;
//	for (pos = 0; pos < 32; pos++)
//	{
//		if ((ret >> pos) & 1)  break;
//	}
//	for (i = 0; i < z; i++)
//	{
//		if (1 == (arr[i] >> pos) & 1)
//		{
//			*p1 ^= arr[i];
//		}
//		else
//		{
//			*p2 ^= arr[i];
//		}
//	}
//}
//
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,9,1,2,3,4 };
//	int z = sizeof(arr) / sizeof(arr[0]);
//	int dog1 = 0;
//	int dog2 = 0;
//	int* p1 = &dog1;
//	int* p2 = &dog2;
//
//	find_single_num(arr, z,p1,p2);
//	printf("%d %d\n", dog1, dog2);
//	return 0;
//}

enum Status
{
	VALID, INVALID
}sta = INVALID;
int my_atoi(const char* arr)
{
	assert(arr);
	int flag = 1;
	if (*arr == '\0')
	{
		return 0;
	}
	while (isspace(*arr))
	{
		arr++;
	}
	// Pandan jeongbu
	if (*arr == '+')
	{
		flag = 1;
		arr++;
	}
	else if (*arr == '-')
	{
		flag = -1;
		arr++;
	}

	int sum = 0;
	while (*arr)
	{
		if (*arr <= 56 && *arr >= 47)
		{
			sum = sum * 10 + (*arr - '0');
			arr++;
		}
		else
		{
			break;
		}
	}
	sta = VALID;
	return flag * sum;
}

int main() 
{
	char arr[20] = "1234567";
	int ret = my_atoi(arr);
	if (INVALID == sta)
	{
		printf("Illegal!!!");
	}
	else if (VALID == sta)
	{
		printf("%d\n",ret);
	}
	return 0;
}